#include <54func.h>
//第二种死锁：子线程上锁后立马被释放掉，导致无法对占用的资源进行解锁，其它资源无法申请
void *threadFunc(void *arg)
{
    pthread_mutex_t *pmutex = (pthread_mutex_t *)arg;
    //加锁
    pthread_mutex_lock(pmutex);
    pthread_exit(NULL);//子线程退出
}
int main()
{
    //定义锁
    pthread_mutex_t mutex;//定义锁
    pthread_mutex_init(&mutex,NULL);                      //初始化锁
    pthread_t tid;
    pthread_create(&tid,NULL,threadFunc,&mutex);
    sleep(1);//确保子线程先加上锁
    int ret = pthread_mutex_trylock(&mutex);
    //使用trylock-普通锁，当锁未锁：trylock会改为已锁
    //                    当锁已锁：trylock会报错，但不会阻塞·
    THREAD_ERROR_CHECK(ret,"trylock");
    printf("I am gold!\n");
    pthread_mutex_unlock(&mutex);
    pthread_join(tid,NULL);//回收子线程资源i
    return 0;
}
